package lei.l_存储文件;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @className: main2
 * @author: xl
 * @date: 2025/7/26 15:11
 * @Version: 1.0
 * @description:
 */

public class main2 {
    /**
     * 推荐理由：
     * NIO.2 Files类：Java原生支持，无需额外依赖，性能好，支持所有文件类型
     * Apache Commons IO：功能更丰富，提供更多便利方法，适合复杂场景
     * 通用性：以上方案都能处理文本、Word、Excel、音频、图片等各种格式
     * 可靠性：提供了适当的异常处理机制
     * 对于大多数应用场景，推荐使用NIO.2的Files.write()方法，因为它简洁、高效且无需额外依赖。
     */

    public static void main(String[] args) {

        // 使用的是绝对路径
        // UniversalFileStorage.saveTextFile("Hello World", "/Users/xionglei/Documents/test.txt");

        // 1. 存储文本文件  filePath使用的是相对路径

        // 1. 存储文本文件
        UniversalFileStorage.saveFile("Hello World test", "test.txt");

        // 2. 存储字节数组（图片、音频等）
        byte[] imageData = new byte[0];
        try {
            imageData = Files.readAllBytes(Paths.get("photo.jpg"));
            UniversalFileStorage.saveFile(imageData, "copy.jpg");
        } catch (IOException e) {
            System.out.println("提示: 无法处理 photo.jpg 文件 (" + e.getMessage() + ")");
        }

        // 3. 存储输入流
        try {
            InputStream inputStream = new FileInputStream("music.mp3");
            UniversalFileStorage.saveFile(inputStream, "backup.mp3");
        } catch (FileNotFoundException e) {
            System.out.println("提示: 无法找到 music.mp3 文件 (" + e.getMessage() + ")");
        }

        // 4. 存储对象为JSON
        Map<String, Object> data = new HashMap<>();
        data.put("name", "张三");
        data.put("age", 25);
        // 序列化为JSON字符串并保存
        UniversalFileStorage.saveFile(data, "data.json");


        User user = new User("张三1", 250);

        UniversalFileStorage.saveFile(user, "user.json");


    }
}

